Adaptive music and video recommendations

ABSTRACT

The user feedback module receives from a user device a selection of a seed media item. The seed media item includes a seed label. The user feedback module further generates a list, the list includes the seed label and a set of related labels based on the seed label. The seed label and each related label include a separate label weight. The user feedback module also identifies multiple media items associated with an associate label. The associate label includes at least one of the seed label or a related label of the first set of related labels. The user feedback module also transmits to the user device a first media item from the multiple media items. The user feedback module adjusts the label weight of the associate label based on a user feedback on the first media item.

RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No.14/172,770, filed Feb. 4, 2014, the entire content of which is herebyincorporated by reference.

TECHNICAL FIELD

This disclosure relates to the field of content delivery platforms and,in particular, to dynamically adapting media content based on userfeedback.

BACKGROUND

On the Internet, content delivery platforms or other applications allowusers to upload, consume, and share digital content such as media items.Such media items may include audio clips, movie clips, TV clips, andmusic videos, as well as amateur content such as video blogging, shortoriginal videos, pictures, other multimedia content, etc. Users may usecomputing devices (such as smart phones, cellular phones, laptopcomputers, desktop computers, netbooks, tablet computers) to use, play,and/or consume the media items (e.g., watch digital videos, listen todigital music).

Currently, users are spending increased amounts of time on contentdelivery platforms. Similar to a television or radio experience, userstypically prefer to watch or listen to content without interruptions orhaving to decide what content to consume next. Some content deliveryplatforms allow users to create playlists or stations that allow theuser to create a list of favorite media items to automatically playwithout interruption. However, generation of such playlists or stationsis a manual process that can take time and resources to understand andenable. Moreover, these playlists or stations are generally finite andquickly get repetitive and outdated. User interests may vary whenconsuming content and the manually-generated static station cannotcapture the user's dynamic interests.

SUMMARY

The following is a simplified summary of the disclosure in order toprovide a basic understanding of some aspects of the disclosure. Thissummary is not an extensive overview of the disclosure. It is intendedto neither identify key or critical elements of the disclosure, nordelineate any scope of the particular implementations of the disclosureor any scope of the claims. Its sole purpose is to present some conceptsof the disclosure in a simplified form as a prelude to the more detaileddescription that is presented later.

In one implementation, a method for dynamically adapting media contentdelivered to a user based on user feedback is disclosed. The methodincludes receiving from a user device, such as computer or mobiledevice, a selection of a seed media item. The seed media item includes aseed label. The method further includes generating a list including theseed label and a set of labels related to the seed label. The seed labeland related labels each include a separate label weight. The method alsoincludes identifying multiple media items associated with the seed labeland/or related labels (i.e., associate label). The method additionallyincludes transmitting to the user device a media item of the multiplemedia items of the associate label. The method also includes receivinguser feedback from the user device on the media item of the associatelabel and adjusting the label weight of the associate label based on theuser feedback. In one implementation, the label weight is adjusted basedon a temporal relation to the user feedback. In one implementation, alabel is an artist identifier (e.g., artist), and a media item is avideo identifier (e.g., video).

In one implementation, the method includes explicit user feedback suchas a like action, a dislike action, a comment, and a sharing action. Themethod also includes implicit user feedback such as a long watch action,a removal action, or a skip action.

In one implementation, the method includes identifying a second set ofrelated labels based on the adjusted label weight of the associatelabel. The method also includes updating the list to contain the secondset of related labels.

Further, in one implementation, the method includes identifying anadditional label when the adjusted label weight of the associate labelexceeds a first threshold value. The additional label may be related tothe associate label.

In one implementation, the method includes calculating a cumulativeweight. The cumulative weight may be the weight of all the separatelabel weights of the list. The method includes comparing the cumulativeweight of the list to a second threshold value. The method furtherincludes replacing one of the more related labels of the list with asecond set of related labels when the cumulative weight is under thesecond threshold. The second set of related labels is based on the seed.In one implementation, the second set of related labels is related tothe seed label.

In one implementation, the method includes assigning a media weight toeach of the multiple media items associated with an associate label(i.e., seed label or related label). In one implementation, the methodincludes transmitting to the user device a media item based on the mediaweight.

Further, in one implementation, the method includes calculating afull-rank weight for each of the plurality of media items associatedwith the associate label. The full-rank weight may include a combinationof label weight and media weight.

In additional implementations, computing devices for performing theoperations of the above described implementations are also disclosed.Additionally, in implementations of the disclosure, a computer readablestorage media stores methods for performing the operations of the abovedescribed implementations.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure is illustrated by way of example, and not by wayof limitation, in the figures of the accompanying drawings.

FIG. 1 is a block diagram illustrating an exemplary network architecturein which implementations of the present disclosure may be implemented.

FIG. 2 is a block diagram illustrating user feedback module, accordingto an implementation.

FIG. 3 is a diagram illustrating an example graphical user interface(GUI), in accordance with one implementation of the present disclosure.

FIG. 4 is a diagram illustrating an example graphical user interface(GUI), in accordance with one implementation of the present disclosure.

FIG. 5 is a flow diagram illustrating a method for delivering mediacontent to user devices based on user feedback, according to someimplementations of the disclosure.

FIG. 6 is a flow diagram illustrating a method for delivering mediacontent to user devices based on user feedback, according to someimplementations of the disclosure.

FIG. 7 is a diagram illustrating label based feedback, according to someimplementations of the disclosure.

FIG. 8 is a diagram illustrating full-rank based feedback, according tosome implementations of the disclosure.

FIG. 9 is a block diagram illustrating an exemplary computer system,according to some implementations.

DETAILED DESCRIPTION

The following disclosure sets forth numerous specific details such asexamples of specific systems, components, methods, and so forth, inorder to provide a good understanding of several implementations of thepresent disclosure. It will be apparent to one skilled in the art,however, that at least some implementations of the present disclosuremay be practiced without these specific details. In other instances,well-known components or methods are not described in detail or arepresented in simple block diagram format in order to avoid unnecessarilyobscuring the present disclosure. Thus, the specific details set forthare merely examples. Particular implementations may vary from theseexample details and still be contemplated to be within the scope of thepresent disclosure.

Content delivery platforms can include one or more stations and the oneor more stations can be consumable over the Internet. A station is amechanism for providing certain media items and/or for providing accessto media items to users. Media items for the station can be selected bya user, uploaded by a user, selected by a content provider, or selectedby a broadcaster. Stations allow users to receive, create, customize,and consume media items. Users can create one or more stations, and uponcreation, the user can view his or her stations from the homepage of thecontent hosting site or from a user interface. A station may provide acontinuous stream of media items and as such, a user may consume acontinuous stream of media content through a station. A station mayinclude a playlist. A playlist may include a list of media items thatare played sequentially or in some order. In a station, new media itemsare continuously added to a station playlist so that playback on astation may continue uninterrupted.

Implementations of the disclosure pertain to dynamically adapting mediacontent for a user based on user feedback. Because of the large numberof media items that are currently available on the Internet (e.g., theWeb and/or other networks) or from a content sharing platform, users mayoften have difficulty choosing and/or finding new media items toconsume. Implementations of the present disclosure may automatically anddynamically curate media content (i.e., media items) for the user.Feedback from the user (such as “likes,” “dislikes,” comments, longwatch actions, or skip actions) associated with media items may beanalyzed in order to determine media content for the user to consume. Astation module may create a station based on an initial selection of amedia item, i.e., seed media item. A user feedback module maydynamically update a station's media content based on user feedback. Auser may modify or delete a station. A user's inaction, for example auser not consuming a media item within a threshold period of time, maycause a station or a station's media content to be modified or deleted.The implementations described herein may allow the user to more easilyand more quickly consume media items without manually searching formedia items.

For purposes of illustration, examples of some implementations of thepresent disclosure are provided. A user may search for videos byperforming a search query of, for example, classical music. The querymay return numerous videos for classical music, and the user may selecta video, for example Mozart—The Marriage of Figaro, from the searchquery results. After the user selects the video, the user may create astation based on video by, for example, clicking a create station buttonassociated with the video (e.g., FIG. 4, button 452). After the userclicks the create station button, the user feedback module (e.g., userfeedback module 135) may create the station and use “The Marriage ofFigaro,” as the seed media item. In this example, the seed media item isthe first video from which the station is created. Media content,specifically the initial media content for the station, may be based onthe seed media item. For example, from the seed media item, the userfeedback module may also determine a seed label associated with the seedmedia item. In this example, the seed label is Mozart. The user feedbackmodule may curate videos for the station relevant to the seed label. Forexample, the user feedback module may curate videos by composers such asBach and Vivaldi. Each composer can be considered a relevant label, thatis, relevant to the seed label (e.g., composer), Mozart. The labels, theseed label and the relevant labels, for example Mozart, Bach, andVivaldi respectively, may have numerous associated media items (e.g.,videos). The user feedback module will select video items for eachcomposer to curate the station's playlist. When a user provides userfeedback on any media item of a station, the user feedback module mayupdate the labels and associated media items in the station playlist.For example, if the user feedback on the Bach video is positive, theuser feedback module may curate more videos of music by Bach or curatevideos by composers related to Bach. User feedback may be, for example,a user like of a video, a comment on a video, or a user skipping avideo, or the like.

FIG. 1 is a block diagram illustrating an exemplary network architecturein which implementations of the present disclosure may be implemented.In one implementation, the network architecture 100 includes userdevices 110A through 110Z, a network 105, a data store 106, a userstation platform 120, and a server 130. In one implementation, network105 may include a public network (e.g., the Internet), a private network(e.g., a local area network (LAN) or wide area network (WAN)), a wirednetwork (e.g., Ethernet network), a wireless network (e.g., an 802.11network or a Wi-Fi network), a cellular network (e.g., a Long TermEvolution (LTE) network), routers, hubs, switches, server computers,and/or a combination thereof. In one implementation, the data store 106may be may be a memory (e.g., random access memory), a cache, a drive(e.g., a hard drive), a flash drive, a database system, or another typeof component or device capable of storing data. The data store 106 mayalso include multiple storage components (e.g., multiple drives ormultiple databases) that may also span multiple computing devices (e.g.,multiple server computers).

The user devices 110A through 110Z may each include computing devicessuch as personal computers (PCs), laptops, mobile phones, smart phones,tablet computers, netbook computers, etc. Each user device may include amedia viewer 111. In one implementation, the media viewer 111 may be anapplication that allows users to view and listen to content, such asimages, videos, web pages, documents, music, etc. For example, the mediaviewer 111 may be a web browser that can access, retrieve, present,and/or navigate content (e.g., web pages such as Hyper Text MarkupLanguage (HTML) pages, digital media items, etc.) served by a webserver. The media viewer 111 may render, display, and/or present thecontent (e.g., a web page, a media viewer) to a user. The media viewer111 may also display an embedded media player (e.g., a Flash® player oran HTML5 player) that is embedded in a web page (e.g., a web page thatmay provide information about a product sold by an online merchant). Inanother example, the media viewer 111 may be a standalone applicationthat allows users to view digital media items (e.g., digital videos,digital images, electronic books). The media viewer 111 may be providedto the user devices 110A through 110Z by the server 130 and/or userstation platform 120. For example, the media viewer 111 may be anembedded media player that is embedded in a web page provided by theuser station platform 120. In another example, the media viewer 111 maybe an application that is downloaded from the server 130.

In one implementation, user station platform 120 may include one or morecomputing devices (such as a rack mount server, a router computer, aserver computer, a personal computer, a mainframe computer, a laptopcomputer, a tablet computer, a desktop computer, etc.), data stores(e.g., hard disks, memories, databases), networks, software components,and/or hardware components that may be used to provide a user withaccess to media items and/or provide the media items to the user. Forexample, the user station platform 120 may allow a user to consume,upload, search for, play, subscribe, share, select, approve of (“like”),disapprove of (“dislike”), and/or comment on media items. The userstation platform 120 may also include a website (e.g., a webpage) thatmay be used to provide a user with access to the media items. The userstation platform 120 may include one or more stations (e.g., stations A125 through station Z 126). Each station (e.g., stations A 125 throughstation Z 126) may include one or more seed labels (e.g., seed label 121and seed label 123, respectively). For example, a user may query videosfor electric cars and choose a particular video about the Electric Foxvehicle. When the user creates a station based on the Electric Foxvehicle video, the seed media item may be the Electric Fox vehicle videoand the seed label may be electric cars. The seed media item may be thefirst media item from which the station is created. In anotherembodiment, a station may have multiple seed labels. For example, theElectric Fox vehicle video may have additional labels such as thecontent provider providing the Electric Fox vehicle video or the vehiclemaker of the Electric Fox vehicle. Each station may include one or morerelated labels (e.g., related label 122 and related label 124), whichrelate to the respective seed label (e.g., seed label 121 and seed label123). For example, in station A 125 related label 122 relates to seedlabel 121, and in station Z 126 related label 124 relates to seed label123. For example, a station based on the Electric Fox vehicle with theseed label of electric cars may have related labels such car batterytechnology and car charging stations. A related label may be related toa seed label (e.g., related label 122 relates to seed label 121) by oneor more criteria such as similarity, popularity, etc. Each station mayinclude one or more media items (e.g., media item 125, media item 127,media item 128, and media item 129). For example, station A 125 includesseed label 121 and an associated seed media item (i.e., media item 125),and includes related label 122 and associated media item (i.e., mediaitem 127). For example, a station with seed label of electric cars mayhave associate seed media items such as videos of different electricvehicles. In addition, the related label of car battery technology mayhave associate media items such as videos of Korean car batterytechnology. One or more media items (e.g., media item 125, media item127, media item 128, and media item 129) may be associated with arespective seed label (e.g., seed label 121 and seed label 123) orrelated label (e.g., related label 122 and related label 124). Forexample, media item 125 is associated with seed label 121, and mediaitem 127 is associated with related label 122. In one embodiment,associating a media item with a label means that the contents of theassociate media items relate the respective label. For example, if thelabel is Mozart, videos of songs by Mozart may be related. In anotherembodiment, associating a media item with a label means that theassociate media items are tagged with the label, for example, in themedia item's metadata. For example, certain media items, in theirmetadata, may contain the tag of Mozart. If a video contains a Mozarttag, for example videos of Mozart's life, such videos may be associatedwith a label.

Examples of a media item (e.g., media item 125, media item 127, mediaitem 128, and media item 129) can include, but are not limited to,digital videos, digital movies, digital photos, digital music, websitecontent, social media updates, electronic books (e-books), electronicmagazines, digital newspapers, digital audio books, electronic journals,web blogs, real simple syndication (RSS) feeds, electronic comic books,software applications, and the like. A media item may be consumed viathe Internet and/or via a mobile device application. For brevity andsimplicity, an online video (also hereinafter referred to as a video) isused as an example of a media item throughout this document. As usedherein, “media,” media items,” “media content,” “online media items,”“digital media,” and “digital media items” can include electronic filesthat can be executed or loaded using software, firmware or hardwareconfigured to present the digital media item to an entity. In oneimplementation, the user station platform 120 may store the media items(e.g., media item 125, media item 127, media item 128, and media item129) using the data store 106.

In one implementation, server 130 may include one or more computingdevices (e.g., a rack mount server, a server computer, etc.). In oneimplementation, server 130 may be included in the user station platform120. In another implementation, server 130 may be separate from userstation platform 120, but may communicate (e.g., exchange data) withuser station platform 120 over network 105 or through anotherconnection. In one implementation, server 130 includes a user feedbackmodule 135. User feedback module 135 may generate related labels (e.g.,related label 122 and related label 124) and find associated media items(e.g., media item 127 and media item 129, respectively) based on a seedlabel (e.g., seed label 121 and seed label 123) and/or user feedback. Inone implementation, user feedback module 135 may be a component, module,plug-in or add-on to a media viewer (e.g., media viewer 111) on server130. In other implementations, user feedback module 135 may beassociated with some other piece of software or may be a standaloneapplication, module, or program. Additional details of user feedbackmodule 135 are provided below.

FIG. 2 is a block diagram illustrating user feedback module, accordingto one implementation. In one implementation, user feedback module 135includes station module 205, media viewer module 210, and feedback unit215. This arrangement of modules, units, or components may be a logicalseparation, and in other implementations, these modules, units, or othercomponents can be combined together or separated in further components,according to a particular implementation. In one implementation, datastore 106 is connected to user feedback module 135 and includes stationdata 231, user data 232, label data 233, and media item data 234. In oneimplementation, server 130 may include both user feedback module 135 anddata store 106. In another implementation, data store 106 may beexternal to server 130 and may be connected to server 130 over a networkor other connection. In other implementations, server 130 may includedifferent and/or additional components which are not shown to simplifythe description. Data store 106 may include one or more mass storagedevices which can include, for example, flash memory, magnetic oroptical disks, or tape drives; read-only memory (ROM); random-accessmemory (RAM); erasable programmable memory (e.g., EPROM and EEPROM);flash memory; or any other type of storage medium.

In one implementation, station module 205 manages the creation andediting of stations (e.g., station A 125 through station Z 126) and theselection of media content. A station (e.g., station A 125 throughstation Z 126) may be, for example, a list of labels (e.g., seed label121 and related label 122) associated with a collection of media items(e.g., media item 125 and media item 127). A user may consume acontinuous stream of media content (e.g., media item 125 and media item127) through a station (e.g., station A 125). It should be noted that astation (e.g., station A 125 through station Z 126) and a playlist mayhave some differences. A playlist may include a list of media items(e.g., media item 125, media item 127, media item 128, and media item129) that are played sequentially or in some other order. In oneimplementation, when each media item in the playlist has been played orotherwise consumed by the user, playback of the playlist may end. Incontrast, a station (e.g., station A 125 through station Z 126),describes a media tool in which media items (e.g., media item 125, mediaitem 127, media item 128, and media item 129) may be consumedcontinuously, without end. In one implementation, new media items arecontinuously added to the station so that playback can continue. Itshould be noted that the methods and systems described herein may beused for both stations and playlists.

In one implementation, the station module 205 may receive indication ofa seed label (e.g., seed label 121 and seed label 123) from a user,another application, or from some other source. For example, a userselects an initial media item (e.g., seed media item 125) that includesa seed label (e.g., seed label 121) and creates a corresponding station(e.g., station A 125). The seed label (e.g., seed label 121) may bestored in data store 106, and may be used to create a new station (e.g.,station A 125). The station module 205 may associate the station with aparticular user or user account. In one implementation, the userinformation may be stored in user data 232 in data store 106. Thestation module 205 may generate a list including the seed label (e.g.,seed label 121) and a first set of related labels (e.g., related label122) based on the seed label. In one implementation, the related labels(e.g., related label 122 and related label 124) and seed label (e.g.,seed label 121 and seed label 123) may be stored in label data 233 indata store 106. The station module 205 may identify media itemsassociated with the seed label (e.g., seed label 121) and/or relatedlabels (e.g., related label 122). When a media item (e.g., media item127) is identified as associated with a label (e.g., related label 122),the label (e.g., related label 122) may be referred to as an associatelabel. In one implementation, the media items (e.g., media item 127) maybe stored in media item data 234 in data store 106.

In one implementation, station module 205 stores the station (e.g.,station A 125 through station Z 126), labels (e.g., seed label 121 andrelated label 122), and media items (e.g., media item 125 and media item127), and user information as station data 231 in data store 106. Thestation data 231 may include a group of pointers or other references tothe actual media items (e.g., media item 125, media item 127, media item128, and media item 129) stored in media item data 234. The station data231 may include a group of pointers or other references to the user datastored in user data 232. The station data 231 may include a group ofpointers or other references to the label data stored in label data 233.Each station in station data 231 may be assigned a unique identifierthat can be used to differentiate one station from another. When a userattempts to edit a station (e.g. station A 125) or provide feedback on amedia item (e.g., media item 127) in a station, station module 205 canretrieve the corresponding station from station data 231 using thisunique identifier and perform the editing operations, as appropriate.

In one implementation, media viewer module 210 generates and/or controlsinteractions with a user interface, such as graphical user interface 300(GUI) and GUI 400 (described below with respect to FIGS. 3 and 4), thatis part of a website or application (e.g., mobile application or app),such as media viewer 111, running on a user device 110A-110Z. Forexample, media viewer module 210 may display media items, such as mediaitem 125, media item 127, media item 128, and media item 129, in themedia portion 405 in GUI 400. In one implementation, media viewer module210 may also display a station creation section 380 at a location inuser station tool 390 where a station may be created, as shown in FIG.3. The station creation section 380 may take the form of an icon, asymbol, a text block, an arrow, a line, or some other indicator thatindicates the location in user station tool 390 where a station (e.g.,station A 125 through station Z 126) may be created. In oneimplementation, media viewer module 210 may also receive a selection ofa media item by a user from a user device (e.g., user device 110A thoughuser device 110Z). In one implementation, the media viewer module 210transmits the information of the selection of a seed media item (e.g.,media item 125 and media item 128) from a user to the station module 205in order to create a station (e.g., station A 125 through station Z126).

In one implementation, feedback unit 215 receives and/or controlsfeedback interactions with a user interface, such as graphical userinterface 400 (GUI), that is part of a website or application (e.g.,mobile application or app), such as media viewer 111, running on a userdevice 110A-110Z. Feedback unit 215 also processes user feedback inorder to generate relevant and customized media content for the user.Feedback from a user device may be received through GUI 400. Forexample, a user may “like” or “dislike” a media item (e.g., media item125, media item 127, media item 128, and media item 129) being displayedin media portion 405 of GUI 400 by selecting like button 453 or dislikebutton 454. The feedback unit 215 may store the feedback data, generatedfrom the feedback interactions, in the user data 232 of data store 106.The feedback unit 215 may generate weights (e.g., label weight 721,label weight 722, temporal weight 880) based on the user feedback.Additionally, the feedback unit 215 may control and transmit thefeedback data and weights to station module 205. In response to thefeedback data from feedback unit 215, station module 205 may update therelated labels (e.g., related label 122 and related label 124) and mediaitems (e.g., media item 125, media item 127, media item 128, and mediaitem 129), as will be described in more detail below.

In one implementation, the feedback unit 215 alone or in conjunctionwith station module 205 uses user feedback to adjust the media items(e.g., media item 125 and media item 127) delivered to the user in astation. In one implementation, user feedback includes explicit and/orimplicit user feedback. Explicit user feedback may include, for example,user “likes,” “dislikes,” comments, or sharing actions. In oneimplementation, explicit feedback on media items may include a user'sremoval action to removed and/or deleted view media items from astation. For example, a removal action may be when a user deletes amedia item from the playlist of a station. In one implementation,implicit user feedback may include, for example, long watch actions orskip actions. For example, a skip action may occur when a user moves amedia item forward in time, effectively fast-forwarding the media item.Alternatively, a skip action may be when a user skips the play of someor all of a media item by, for example, choosing another media item onthe station. A long watch action may be, for example, a period duringwhich a user continuously consumes a media item, or consumes a mediaitem without a skip action or pause. In another implementation, feedbackmay be measured by a temporal relation to the user feedback. Forexample, feedback that is received within 30 minutes of the current timemay be weighed more heavily than feedback received outside of 30 minutesfrom the current time. In one implementation, different weights based onthe temporal relation to user feedback may affect media content andrelated labels in a station. In another implementation, user feedbackaffects the media content for the station, as is described in moredetail below with respect to FIGS. 4, 7, and 8.

In another implementation, the media content for a station may begenerated by feedback from the user's prior history. In oneimplementation, a user may perform an action or otherwise useapplications after a login under a user ID. The user's actions may berecorded under the user ID associated with the user. A user may have oneor more user IDs. The user's actions and information associated with theuser ID may be called the user's prior history and stored for example,in user data 232 in data store 106. The user's prior history may beanalyzed by feedback unit 215 and sent to station module 205 to curatemedia content in response to the feedback. For example, a user maygenerate user history based on social interactions that the user haswith other entities (e.g., other users of a content sharing platform,social network, and/or other platforms). For example, the feedback unit215 may identify other users that communicate with the user (e.g., otherusers that the user emails, other users with whom the user chats, otherusers that the user communicates messages with using a social connectionplatform, etc.). Examples of social interactions may include, but arenot limited to, communicating with another user (e.g., a chat message,an email, a text message, a short message service (SMS) message),indicating an approval of a comment, a post, commenting on a post,replying to a post, and/or an action of another user on the contentsharing platform and/or a social connection platform, establishing aconnection with a user on a social connection platform (e.g.,“friending” a user, adding a user as a friend, following a user, addingthe user as a social connection, etc.), etc. The feedback unit 215 mayidentify stations and/or media items that belong to the other users. Thefeedback unit 215 may also identify media items that the other usershave previously consumed (e.g., viewed and/or listened to). The feedbackunit 215 alone, or in connection with station module 205, can generateweights or curate media content based on the other media items thatbelong to the other users and/or that the other users have previouslyconsumed. In another example, the feedback unit 215 may also analyze auser's social interactions (e.g., analyze the emails, chats, messages,and/or posts) in order to customize media content, i.e., include mediaitems in a station that are of interest to the user. In anotherimplementation, the feedback unit 215 may generate weights based on userhistory provided by the user. For example, the user may voluntarilyprovide input indicating the user's interests, preferences, likes,dislikes, hobbies, employment, geographical location, personalinformation, and/or other demographic information. The feedback unit 215may identify media items that may be of interest to the user based onthe personal information and/or other demographic informationvoluntarily provided by the user.

In one implementation, the feedback unit 215 alone or in conjunctionwith station module 205 continuously and dynamically updates the labelsand associated media items of a station based on user feedback.

FIG. 3 is a diagram illustrating an example graphical user interface(GUI), in accordance with one implementation of the present disclosure.In FIG. 3, GUI 300 may be a homepage (e.g., a main page) of a user of acontent delivery platform. For example, GUI 300 may be presented byand/or displayed within a web browser when the user accesses or logsinto the content delivery platform via the web browser. In anotherimplementation, GUI 300 may be a home interface or a main interfacepresented by media viewer 111 (e.g., an app, an application, a program,a software module/component, etc., that may be used to view, play,and/or consume media items). Although GUI 300 is illustrated usingbuttons (e.g., buttons 305, 310, 315, etc.), other implementations mayuse links and/or other graphical user interface controls or elements inplace of one or more of the buttons.

GUI 300 includes buttons 305 and 310. Button 305 may allow the user toview a history of the media items that the user has consumed (e.g.,viewed or played) on a particular station. For example, when the userselects and/or activates the button 305, a new GUI that includes a listof the last (e.g., ten, twenty, fifty or hundred) media items viewed bythe user may be presented to the user. The button 310 may allow a userto view future media items that the user may consume for a particularstation. A media viewer (e.g., media player 490) may play the mediaitems on a station in the order in which the media items are listed onthe station. A user may also transition between media items on astation. For example, a user may wait for the next media item on thestation to play or may select a particular media item in the stationlist.

The GUI 300 also includes a station section 311 that includes a list ofone or more stations that the user created and is currently active. Inone implementation, the station section 311 may include a list of allstations to which the user is linked, for example, through an indicationstored in user data 232 in data store 106. In another implementation,the station section 311 may include a subset of stations to which theuser created. For example, the station section 311 may present apredefined number of stations (e.g., 3 stations), the stations that theuser accesses most frequently, the stations that the user has accessedmost recently, the stations that the user has most recently created,etc. Other mechanisms of determining the stations to include in a subsetof stations displayed can be used without departing from the scope ofthe disclosure.

As illustrated in FIG. 3, the station section 311 includes buttons 315,325, and 335. Button 315 is labeled “Station A” to indicate that thatuser is subscribed to Station A, button 325 is labeled “Station B” toindicate that that user is subscribed to Station B, and button 335 islabeled “Station C” to indicate that that user is subscribed to StationC. In one implementation, a list of media items in a station may bepresented to the user when the user activates a corresponding button forthe station. For example, if the user activates (e.g., clicks on orselects) button 315, the GUI 300 may display a partial list of videosthat are in Station A (e.g., media item list 350). In oneimplementation, when a user activates (e.g., clicks, selects, etc.) oneof the buttons 315 through 335, a menu may appear on the GUI 300 listingmedia items associated with the station. In another implementation, whena user activates (e.g., clicks, selects, etc.) one of the buttons 315through 335, a popup window including a graphic representation (e.g.,picture of a single frame from the media item) of media items in thestation associated with the activated button may appear on the GUI 300.It should be understood that in other implementations, other visualindicators such as graphic representations, and/or text can be presentedto a user to provide stations to the user.

The GUI 300 also includes a station creation section 380. Stationcreation section 380 provides a user an interface to create stations. Inone implementation, a station may be created by entering a labelidentifier 383 (e.g., artist identifier) in entry field 381, and furtherselecting a media item from media item list 350. For example, a user mayenter Artist P into label identifier 383. In response, the user stationtool 390 populates and displays a number of media items associated withArtist P in media item list 350. When a user selects, for example, mediaitem 370 (i.e., Artist P video “Viva Las Vegas”) from media item list350, the selected media item 370 is categorized as a seed media item(e.g., Viva Las Vegas video), with a seed label (e.g., Artist P).Subsequently, a new station may be created based on the selected mediaitem 370. For example, the new station may be Station X: Artist P—VivaLas Vegas.

In one implementation, a station may be created by entering a media itemidentifier 384 (e.g., video identifier) in entry field 382, and furtherselecting a media item from media item list 350. For example, a user mayenter “Amazing Grace” into media item identifier 384. In response, theuser station tool 390 populates and displays a number of media itemsassociated with “Amazing Grace” in media item list 350. In this example,the user station tool 390 may in response to media item identifier384—“Amazing Grace”—display a list of media items associated with“Amazing Grace.” The media items may be from many different artists orcontent creators, but all will be associated with “Amazing Grace.” Whena user selects a media item from media item list 350, the selected mediaitem is categorized as a seed media item (e.g., Amazing Grace), with aseed label (e.g., Artist P). Subsequently, a new station may be createdbased on the selected media item.

In another implementation, a station may be created by entering both alabel identifier 383 and media item identifier 384, and furtherselecting a media item from media item list 350. In such a case, userstation tool 390 populates media item list 350 based on both the enteredlabel identifier 383 and media item identifier 384. The remaining stepsof creating a station are the same as disclosed above.

The station creation section 380 also includes button 320, button 325,and button 340. When a user activates (e.g., clicks, selects, etc.), forexample, button 320, a media player (as discussed below in conjunctionwith FIG. 4) may begin playback of the media items included in StationA. For example, the media player (e.g. media player 490) may beginplayback of the media items included in Station A starting with thehighest ranked or weighted media item in the Station A media item list.In another example, the media player (e.g. media player 490) may beginplayback of the media item at the point where the user disconnected frommedia player 490/station or paused a media item. In another example, themedia player (e.g. media player 490) may select any of the media itemsof Station A.

As illustrated in FIG. 3, the media item list 350 includes media item360, media item 365, and media item 370. Each media item (e.g., mediaitem 360, media item 365, and media item 370) may include informationsuch as, the title of a media item, information about the media item,and an icon for the media item. For example, the media item 360 includesinformation that media item 360 is a “Station A video,” includes thetitle of the video (e.g., Amazing Grace), the artist (e.g., Artist P),and an icon 361. An icon (e.g., icon 361, icon 326, or icon 371) may betext, a thumbnail, an image, a frame, and/or some other graphic used torepresent the media item for the media item. Although a list of mediaitems are shown as being included in the media item list 350, it shouldbe understood that in other implementations, other information may beshown in media item list of GUI 300. For example, an image (e.g., aJPEG) may be shown in the GUI 300. In another example, digital music(e.g., an MP3) may be played in the GUI 300.

FIG. 4 is a diagram illustrating an example graphical user interface(GUI), in accordance with one implementation of the present disclosure.In one implementation, the GUI 400 may be part of a media viewer 111provided by a server (e.g., server 130 as illustrated and discussedabove in conjunction with FIG. 1). For example, the GUI 400 may be partof media viewer 111 that is embedded in a web page (e.g., an embeddedmedia viewer such as a Flash® player or a hypertext markup language-5(HTML5)-based player) and the GUI 400 may be rendered by a web browserexecuting on a user device (e.g., user device 110A though user device110Z). In another implementation, the GUI 400 may be part of mediaviewer 111 that may be separate from a web page/web browser (e.g., maybe a standalone media viewer and/or application). For example, the mediaviewer 111 may be a separate application (e.g., an app) that isexecuting on the user device (e.g., user device 110A though user device110Z). Referring back to FIG. 3, the GUI 400 may be displayed to theuser when the user selects a media item from media item list 350 or aplay station button, such as button 320, button 325, and button 340.

The GUI 400 includes media viewer controls which may be used to controlthe consumption of the media items (e.g., digital videos and/or digitalmusic) and receive feedback from the user device (e.g., user device 110Athough user device 110Z). The media viewer controls include a playbutton 421, a pause button 422, a rewind button 423, a fast forwardbutton 424, and a volume button 425. The play button 421 may allow auser to begin and/or restart playback of the media items. In oneimplementation, the user's interaction with the play button 421 may beused as implicit feedback. The pause button 422 may allow a user topause and/or un-pause playback of media items. In one implementation,the user's interaction with the pause button 422 may be used as implicitfeedback. The rewind button 423 may allow a user to rewind playback,move and/or skip to an earlier point in time in the media items. In oneimplementation, the user's interaction with the rewind button 423 may beused as implicit feedback. The fast forward button 424 may allow a userto fast forward playback, move, and/or skip to a later point in time inthe media items. In one implementation, the user's interaction with thefast forward button 424 may be used as implicit feedback.

The GUI 400 also includes a play time display 413, a playback bar 411,and a playback slider 412. The play time display 413 may display acurrent play time and/or a total play time for the media items. Forexample, a total play time (e.g., the total length) of media item may be2 minutes and 30 seconds (e.g., 2:30). The current play time may becurrent time/position in the playback of media item (e.g., 1 minute and53 seconds or 1:53). In one implementation, the play time can be used asimplicit feedback. Playback slider 412 is positioned on a region of aplayback bar 411 that corresponds to the current play time (e.g., 1:53).The playback slider 412 may be adjusted (e.g., dragged) to any otherregion of the playback bar 411 to adjust the current play time shown inthe play time display 413. In one implementation, the user's interactionwith the playback slider 412 may be used as implicit feedback. The GUI400 includes a media portion 405 that may display a media item. Forexample, media portion 405 may be the portion of the GUI 400 where avideo (e.g., a media item) is played. The media portion 405 may alsoplay or display other types of videos, images, music, and/or other mediaitems.

The volume button 425 may allow user to control the volume of sounds,music, and/or other audible noises in the videos. In one implementation,the volume bar 431 and the volume slider 432 may be displayed when theuser clicks and/or activates the volume button 425. For example, thevolume bar 431 and the volume slider 432 may not be initially displayedin the GUI 400. After the user clicks the volume button 425, the volumebar 431 and the volume slider 432 may be displayed. The user may moveand/or slide the volume slider 432 up and/or down along the volume bar431 to control the volume of sounds, music, and/or other audible noisesin the videos. For example, the user may slide the volume slider 432 upto increase the volume or may slide volume slider 432 down to decreasethe volume. In one implementation (not shown in the figures), the GUI400 may also include buttons (e.g., magnifying glass buttons) that allowa user to zoom in and/or zoom out during the consumption of media items.This may allow a user to get a closer view and/or a farther view of themedia item.

The GUI 400 also includes media item section 450. The media item section450 may include information such as the title, a description, number ofapprovals from other users (e.g. “likes”), number of dislikes, thestation that the media item belongs to, and total number of views forthe media item. The media item section 450 includes information aboutthe video titled “Video A” such as the title, the station that the videobelongs to (e.g., Station A), and the number of views (e.g., 53,423),likes (e.g., 7345), and dislikes (e.g., 43) for the video. In addition,the media item section 450 contains station name 451, which is “StationA: Artist A.”

The media item section 450 further includes buttons 452, 453, and 454.Button 452 may allow a user to create a station based on the media item(e.g., seed media item) presented in the media portion 405. For example,a user could be watching a video and decide that he or she wants tocreate a station. The button 452 may be used to create station X thatincludes the video titled, “Video A,” that is playing in the mediaportion 405. The button 453 may allow a user to indicate that the userapproves of or likes the media item that is playing in the media portion405. For example, the button 453 may be used to approve of or “like” thevideo titled, “Video A” that is playing in the media portion 405. Theuser's action on button 453 (i.e., “like” a media item) may be used asexplicit feedback. The button 454 may allow a user to indicate that theuser does not like the media item that is playing in the media portion405. For example, the button 454 may be used to “dislike” the videotitled, “Video A.” that is playing in the media portion 405. The user'saction on button 454 (i.e., “dislike” a media item) may be used asexplicit feedback.

The GUI 400 also includes a media item recommendation section 480 thatincludes information associated with a playlist for the user, generatedby user feedback module 135. In one implementation, the media items maybe dynamically generated for the user based on user feedback. The mediaitem recommendation section 480 includes information (e.g., text)indicating that a set of media items has been generated for the userbased on the user's approval (e.g., “like” of “Artist A: Video A”). Themedia item recommendation section 480 also includes information (e.g.,text) indicating one or more labels and media items (e.g., Artist A: HeyJude, Artist L: Imagine, Artist W: Baba O'Riley) that may be included inthe station list. In other implementations, the media itemrecommendation section 480 may include additional information (e.g.,titles, descriptions, images, icons, and graphics) to represent the oneor more media items included in the station. In other implementations,more or less information (e.g., text, images, icons, graphics, etc.) maybe included in the media item recommendation section 480. The media itemrecommendation section 480 also includes button 481 and button 482. Whena user activates (e.g., clicks, selects, etc.) button 481, media player490 may begin playback of the media items included in the station. Theorder of the playback of media items may be based on a media weight orranking of the media items. Alternatively, labels may be pseudo-randomlyselected and the highest weighted media item associated with theselected label delivered. The button 482 may allow user to view themedia items that are included in a station list/playlist.

FIG. 5 is a flow diagram illustrating a method for delivering mediacontent to user devices based on user feedback, according to someimplementations of the disclosure. The method 500 may be performed byprocessing logic that comprises hardware (e.g., circuitry, dedicatedlogic, programmable logic, microcode, etc.), software (e.g.,instructions run on a processing device to perform hardware simulation),or a combination thereof. In one implementation, processing logic mayperform all or part of the operations of user feedback module 135 toperform all or part of the disclosed method. In another implementation,processing logic may perform all or part of the operations of the datastore 106 to perform all or part of the disclosed method.

For simplicity of explanation, the methods of this disclosure aredepicted and described as a series of acts. However, acts in accordancewith this disclosure can occur in various orders and/or concurrently,and with other acts not presented and described herein. Furthermore, notall illustrated acts may be required to implement the methods inaccordance with the disclosed subject matter. In addition, those skilledin the art will understand and appreciate that the methods couldalternatively be represented as a series of interrelated states via astate diagram or events. Additionally, it should be appreciated that themethods disclosed in this specification are capable of being stored onan article of manufacture to facilitate transporting and transferringsuch methods to computing devices. The term “article of manufacture,” asused herein, is intended to encompass a computer program accessible fromany computer-readable device or storage media. In one implementation,method 500 may be performed by user feedback module 135, as shown inFIG. 1 and FIG. 2.

Referring to FIG. 5, in one implementation, method 500 begins at block505 when processing logic receives from a user device (e.g., user device110A though user device 110Z) a selection of a seed media item (e.g.,media item 125 and media item 128). The seed media item (e.g., mediaitem 125 and media item 128) includes a seed label (e.g., seed label 121and seed label 123). The seed media item may function as the initialmedia item on which a station and subsequent selection of related labels(e.g., related label 122 and related label 124) is based. For example, auser may select a media item such as a video of the song, “Video A,” byArtist A. When the user decides to create a station, the selected mediaitem, in this case the video, “Video A,” may be considered the seedmedia item (e.g., media item 125 and media item 128). The video, “VideoA,” has an associated seed label, in this case, the seed label is theartist, “Artist A”. Other examples of labels might include “rock,”“British,” “classic rock,” etc.

Method 500 continues to block 510, where processing logic generates alist including the seed label (e.g., seed label 121 and seed label 123)and a first set of related labels (e.g., related label 122 and relatedlabel 124) based on the seed label. The seed label and each relatedlabel may include a separate label weight. Continuing with the previousexample, the artist, “Artist A”, is the seed label. Processing logictakes the seed label, Artist A, and finds a group of related artists.The related artists may be, for example, Artist L and Artist W. In oneimplementation, the set of related labels (e.g., related label 122 andrelated label 124) may be based on the seed label and popularity, numberof “likes” of a community of users, or recent views by a community ofusers. In another implementation, a set of related labels may be basedon the seed label and the user's user history.

It should be noted that since the seed media item (e.g., media item 125and media item 128) is the first media item the user chooses, there isnot an opportunity to receive user feedback on the media items apartfrom the user selecting the seed media item. As such, method 500 usesthe seed media item (e.g., media item 125 and media item 128), and notnecessarily current user feedback, to determine a first set of relatedlabels (e.g., related label 122 and related label 124). In anotherimplementation, method 500 uses one or both of the seed media item(e.g., media item 125 and media item 128) and the user's history todetermine the related labels.

Returning to block 510 of method 500, in one implementation, processinglogic may assign a label weight to all the labels, including the seedlabel (e.g., seed label 121 and seed label 123) and the set of relatedlabels (e.g., related label 122 and related label 124). One example ofhow user feedback module 135 identifies a set of related labels, in oneimplementation, can be illustrated using FIG. 7. FIG. 7 is a diagramillustrating label based feedback, according to some implementations ofthe disclosure. In FIG. 7, seed label 121 has been assigned label weight721 of a value of “5.” Related label 122 has been assigned a labelweight 722 of a value of “3,” and related label 723 has been assigned alabel weight 724 of a value of “2.” In one implementation, processinglogic assigns various weights as label weights (e.g. label weight 721,label weight 722, and label weight 723). In another implementation, anetwork administrator assigns various weights as label weights. In oneimplementation, the seed label, (e.g., seed label 121) is initiallyassigned a higher weight than the related labels (e.g., related label122 and related label 723), because the seed media item is the initialuser selection. As such, the seed media item reflects the user's desiredmedia content, and the desire may be appropriately reflected with alarger initial label weight, like label weight 721. In oneimplementation, label weights (e.g., label weight 721, label weight 722,and label weight 724) may change based on user feedback, and the seedlabel 121 may not reflect the highest label weight. In oneimplementation, the label weights may be initialized at predeterminedvalues. For example, label weight 721 of seed label 121 may beinitialized at a value of “6” while all the label weights of relatedlabels (e.g. label weight 722 of related label 122) are initiallyassigned a value of “3.”

Method 500 continues to block 515, wherein processing logic identifiesmultiple media items associated with an associate label, wherein theassociate label includes at least one of the seed label (e.g., seedlabel 121) or a related label of the first set of labels (e.g., relatedlabel 122 and related label 723). When a label (e.g. seed label 121 orrelated label 122) is associated with media items (e.g., media item 125or media item 728, respectively), the label may be considered anassociate label. Returning to FIG. 7 for purposes of illustrating method500. Media items, such as videos, may be associated with labels, such asartists. For example, the artist, Artist A, may have numerous associatedmedia items (e.g., videos). In FIG. 7, media items 740 are associatedwith seed label 121 (e.g., associate label), media items 750 areassociated with related label 122 (e.g., associate label), and mediaitems 760 are associated with related label 723 (e.g., associate label).

Method 500 continues to block 520, wherein processing logic, in oneimplementation, assigns a media weight to each of the multiple mediaitems associated with the associate label. In FIG. 7, media items 740are associated with seed label 121. Each media item of the multiplemedia items 740 has a media weight. For example media item 125 has amedia weight of “10.” The subsequent individual media items of mediaitems 740 has a media weight 730 value of “7,” media weight 732 value of“6,” and media weight 733 value of “3.” In one implementation, the setof media weights (e.g., media weight 725, media weight 730, media weight732, and media weight 733) may be based on popularity, number of “likes”of a community of users, or recent views by a community of users. Inanother implementation, media weights (e.g., media weight 725, mediaweight 730, media weight 732, and media weight 733) may be based on theuser's user history stored. In one implementation, processing logicassigns various weights as media weights (e.g., media weight 725, mediaweight 730, media weight 732, and media weight 733). In anotherimplementation, a network administrator assigns various weights as mediaweights (e.g., media weight 725, media weight 730, media weight 732, andmedia weight 733).

Method 500 continues to block 525, wherein processing logic transmits tothe user a first media item of the multiple media items with anassociate label. In FIG. 7, all the labels (e.g., seed label 121,related labels 122, and related label 723) have been associated withmedia items (e.g., media items 740, media items 750, and media items760, respectively). Processing logic may choose a media item out of allthe media items (e.g., media items 740, media items 750, and media items760) to transmit to the user device. In one implementation, processinglogic randomly selects a label (e.g., seed label 121, related label 122,or related label 723) and chooses the media item with the highest mediaweight. In another implementation, processing logic selects the label(e.g., seed label 121, related label 122, or related label 723) that hasnot yet been consumed by the user and selects the media item with thehighest weight. In one implementation, processing logic more oftenselects labels with a higher label weight, and selects the media item ofthe label with the highest weight.

Method 500 continues to block 530, wherein processing logic adjusts thelabel weight (e.g., label weight 721, label weight 722, or label weight724) of the associate label (e.g., seed label 121, related label 122, orrelated label 723) of the first media item based on a user feedback,wherein the user feedback is received from the user device (e.g., userdevice 110A though user device 110Z) for the first media item. Forexample, media item 728 under related label 122 (e.g., associate label)may be the first media item transmitted to the user. If the userperforms an implicit or explicit feedback, for example a “like,” ofmedia item 728, label weight 722 is adjusted for the media item 728. Inone implementation, since the feedback is a positive explicit feedback,label weight 722 of related label 122 may be increased from a value of“3” to a value of “4,” an increase of 1. In another implementation, ifthe user feedback is a negative explicit feedback, for example, a“dislike,” label weight 722 of related label 122 may be decreased from avalue of “3” to a value of “2,” a decrease of 1. In one implementation,if the user feedback is a positive implicit feedback, for example, along watch action, label weight 722 of related label 122 may beincreased from a value of “3” to a value of “3.33,” an increase of 0.34.In another implementation, if the user feedback is a negative implicitfeedback, for example, a skip action, label weight 722 of related label122 may be decreased from a value of “3” to a value of “1.66,” adecrease of 0.34. In one implementation, different types of userfeedback user feedback of different users may increase or decrease thelabel weight by different values as determined by processing logic.

In one implementation, method 500 continues to block 535, whereinprocessing logic identifies a second set of related labels based on theadjusted label weight of the associate label. For example, returning toFIG. 7, if a user watches media item 728 associated with related label122 and “likes” media item 728 and also performs a long watch action,the label weight 722 may increase from a value of “3” to a value of“4.34” (i.e., label weight 722 of (3) plus a positive explicit feedback“like” (1) plus a positive implicit long watch (0.34)=adjusted labelweight of (4.34)). As a result, the processing logic may identify asecond set of related labels related to related label 122.Alternatively, if the user feedback reduces the label weight 722 ofrelated label 122 from a value of “3” to a value of “1.64,” processinglogic may identify labels that are unrelated to related label 122, butrelated to the seed label 121 and/or to related label 723. In oneimplementation, labels with low label weights may be replaced by thesecond set of related labels. Method 500 continues to block 510, whereinprocessing logic updates the list to contain the second set of relatedlabels. Returning to FIG. 7, if the label weight 722 or related label122 increases or decreases, processing logic updates the list of relatedlabels based on the adjusted label weight. In one implementation,processing logic identifies and associates new and additional mediaitems for the updated list of related labels.

In order to help aid in the understanding of the present disclosure, anillustrative example of an application of the flow diagram in FIG. 6 isprovided as follows. A user may select an initial video (e.g., seedmedia item), for example, a music video, and create a station based onthe initial video. The initial video has at least one artist (e.g., aseed label). From the initial artist, additional related artists (e.g.,associate labels) are determined. The related artists may be determinedby community popularity, recent activity, or by other methods. Thus, agroup or list of artists is generated; the list includes the initialartist and related artists. Each of the artists may be assigned a weight(e.g., label weight). From the list of artists, videos (e.g., mediaitems) by the initial artist and the related artists are selected. Thesevideos may populate the station; and may be considered a baseline orinitial set of videos for the station. Each of the videos may beassigned a weight (e.g., media weight). As the videos are consumed bythe user, the user provides feedback on the videos. The feedback may beimplicit, explicit, and/or temporal. As the user provides feedback, theweights assigned to the artists (e.g., label weights) are adjustedaccordingly. For example, if a video receives negative feedback, theweight of the artist associated with the video may decrease. If a videoreceives positive feedback, the weight of the artist associated with thevideo may increase. Moreover, depending on the type of feedback, theadjusted weight may be more or less. For example, if the feedback is anexplicit “like” of a video, it is a strong indication the user actuallylikes the artist, and the associated artist weight may be adjusted morethan if the feedback (e.g. implicit feedback) is a long watch of avideo. As the weights for the artists are adjusted, some artists may beremoved from the station and some artists may be added to the station.As the artists of a station are adjusted, the method presented above maybe used iteratively. For example, as new artists populate the station,new videos associated with the new artists may also populate thestation. Likewise, when artists are removed from the station, theassociated videos of the removed artist may also be removed. As the usercontinually consumes the videos of a station, feedback is received,label weights are adjusted, and media content of the station adjusted,etc.

FIG. 6 is a flow diagram illustrating a method for delivering mediacontent to user devices based on user feedback, according to someimplementations of the disclosure. The method 600 may be performed byprocessing logic that comprises hardware (e.g., circuitry, dedicatedlogic, programmable logic, microcode, etc.), software (e.g.,instructions run on a processing device to perform hardware simulation),or a combination thereof. In one implementation, processing logic mayperform all or part of the operations of user feedback module 135 toperform all or part of the disclosed method. In another implementation,processing logic may perform all or part of the operations of the datastore 106 to perform all or part of the disclosed method.

In one implementation, method 600 begins at block 605 when processinglogic receives from a user device (e.g., user device 110A though userdevice 110Z) feedback on a media item (e.g., media item 728). At block605, processing logic adjust the label weight 722 of the related label122 (i.e., associate label, associated with media item 728). At block610, processing logic compares the adjusted label weight (i.e., labelweight 722) of the associate label (i.e., related label 122) to a firstthreshold value. If the adjusted label weight (i.e., label weight 722)of associate label (i.e., related label 122) exceeds the first thresholdvalue, for example a value of “5,” processing logic adds one or moreadditional labels to the list (e.g., station list) that relate to theassociate label (i.e., related label 122). In one implementation, theadditional labels may be related to the associate label (i.e., relatedlabel 122) based on popularity, number of “likes” of a community ofusers, or recent views by a community of users. In anotherimplementation, the additional labels may be related to the associatelabel (i.e., related label 122) based on the user's user history stored.In one implementation, processing logic identifies and associatesadditional media items for the additional labels. The additional labelsare added to the station list of media items.

In one implementation, regardless if the adjusted label weight (i.e.,label weight 722) of associate label (i.e., related label 122) exceedsthe first threshold value, method 600 proceeds to block 615 whereprocessing logic compares the cumulative weight of the separate labelweights of the list (e.g., station list). Returning to FIG. 7 forpurposes of illustration. In FIG. 7, the list of labels includes seedlabel 121, related label 122, and related label 723. Media items (e.g.,media items 740, media items 750, and media items 760) have beenassociated with seed label 121, related label 122, and related label723, respectively. In other words, seed label 121, related label 122,and related label 723 may be considered associate labels since they havebeen associated with media items (i.e., media items 740, media items750, and media items 760, respectively). Each label (e.g., seed label121, related label 122, and related label 72) is initially assigned byprocessing logic a separate label weight (e.g., label weight 721, labelweight 722, and label weight 724). As the user consumes media items andprovides implicit and explicit feedback, processing logic adjusts theseparate label weights (e.g., label weight 721, label weight 722, andlabel weight 724) associated with the consumed media items. In block 615of method 600, processing logic takes the cumulative weight of theseparate label weights (e.g., label weight 721, label weight 722, andlabel weight 724). For example, label weight 721 has a value of “5,”label weight 722 has a value of “3”, and label weight 724 has a value of“2.” In another implementation, processing logic takes the cumulativeweight of the related labels (e.g., related label 122 and related label723), while leaving out the label weight (e.g., label weight 721) of theseed label (e.g., 121). The cumulative weight is compared to a secondthreshold value. In block 616 of method 600, if the cumulative weight isunder the second threshold value, one or more of the related labels(e.g., related label 122 and related label 723) are replaced with asecond set of related labels. The second set of related labels arerelated or based on the seed label (e.g. seed label 121). For example ifthe cumulative weight is “10” and the second threshold value is “15,”then processing logic may select a second set of related labels andreplace some, all, or none of the related labels in the station list.

FIG. 8 is a diagram illustrating full-rank based feedback, according tosome implementations of the disclosure. Full-rank based feedback 800 maybe used in conjunction with the method 500 and method 600, presentedabove. Processing logic receives a seed media item from a user device(e.g., user device 110A through user device 110Z). The seed media itemincludes a seed label (e.g., seed label 121). Processing logic generatesa list of labels including the seed label and related labels (e.g.,related label 122 and related label 723), the related labels are basedon the seed label. The processing logic assigns the seed label and therelated labels an initial label weight (e.g., label weight 721, labelweight 722, and label weight 724). The seed label and the related labelsare part of a list, or list of labels, and belong to a user createdstation. Processing logic associates media items (e.g., media items 740,media items 750, and media items 760, respectively) with seed label 121,related label 122, and related label 723. In other words, seed label121, related label 122, and related label 723 may be consideredassociate labels since they have been associated with media items (i.e.,media items 740, media items 750, and media items 760, respectively).The media items are included in the station playlist. Each label (e.g.,seed label 121, related label 122, and related label 72) is initiallyassigned, by processing logic, a separate label weight (e.g., labelweight 721, label weight 722, and label weight 724). As the userconsumes media items and provides implicit and explicit feedback,processing logic adjust the separate label weights associated with theconsumed media items.

In one implementation, a full-rank weight for each media item (e.g.,media items associated with an associated label) may be calculated. Eachmedia item (e.g., media items 740, media items 750, and media items 760,respectively) has an associated media weight (e.g., media weight 725,media weight 730, media weight 732, and media weight 733 for media items740) and an associate label. For example, seed label 121 is theassociate label for media items 740, related label 122 is the associatelabel for media items 750, and related label 723 is the associate labelfor media items 760. In order to calculate the full-rank for each mediaitem, the media items may be multiplied by various weights. The initialmedia weight for the media items may be based on popularity, userhistory, or other criteria. Additionally, in FIG. 8, the media weight ofmedia items 740 are multiplied by the label weight 721 of theirassociated label, seed label 121. For example, media weight 725 with avalue of “10” is multiplied by label weight 721 with a value of “5” togenerate full-rank media weight 825 with a value of “50.” In oneimplementation, every media item of station (e.g., media items 740,media items 750, and media items 760) may have a full-rank media weight(e.g., full-rank media weight 825).

In another implementation, a full-rank weight for each media item may becalculated using various different weights. In one implementation, thelabel weight (e.g., label weight 722) of the associate label (e.g.,related label 122) is adjusted based on a temporal relation to the userfeedback. Adjusting label weight based on a temporal relation may occur,for example, when feedback is received within 30 minutes of the currenttime. Such feedback has a positive temporal relation and may be weighedmore heavily than feedback received outside of 30 minutes from thecurrent time (i.e., negative temporal feedback). In FIG. 8, temporalweight 880 with a value of “2,” may be multiplied with label weight 722with a value of “3,” generating a value of “6.” Temporal weight 880 witha value of “2,” may be multiplied with label weight 722 with a value of“3,” and be further multiplied with the media weights (e.g., mediaweight 726) to generate a full-rank media weight (e.g., full-rank mediaweight 826). For example, media item 728 with media weight 726 withvalue of “9” may be multiplied by label weight 722 with a value of “3,”and multiplied by temporal weight 880 with a value of “2,” to generate afull-rank media weight 826 with a value of “54” for media item 728. Alist of all the media items that have a full-rank may be listed infull-rank media item list 810. In one implementation, full-rank basedfeedback allows for a single ranked list of media items. In anotherimplementation, processing logic may choose media items from thefull-rank media item list 810 to transmit to a user device (e.g., userdevice 110A through 110Z) based on the highest full-rank media weight(e.g., full-rank media weight 825). In an alternative implementation,some or all of the label weights of the list may be adjusted by atemporal relation to user feedback. In another implementation, some orall of the label weights of a list may be adjusted by other criteriasuch as user history, lists of other stations created by the user, etc.

It should be noted, however, that although the present disclosure may bediscussed at times in relation to artists and videos for ease ofexplanation, the present disclosure is not limited to artists andvideos. In alternative implementations, the media item may be othertypes of media content that can be consumed (e.g., view, watch, listen,hear, or read) by a user such as radio, documents, books, news feeds,photos, etc. In alternative implementations, labels may be sub-artists(e.g., the Beatles at different musical periods), genre (e.g.,classical), sub-category of artists (e.g., parodies of Lady Gaga), newsprograms, political programs, sources of news, sports programs,sub-categories of each, eras, styles, hot tracks, etc. For example, auser may create a station with a label for football videos, or forfashion videos, or photos of craftsman-style architecture, etc.

FIG. 9 illustrates a diagrammatic representation of a machine in theexemplary form of a computer system 900 within which a set ofinstructions, for causing the machine to perform any one or more of themethodologies discussed herein, may be executed. In alternativeimplementations, the machine may be connected (e.g., networked) to othermachines in a local area network (LAN), an intranet, an extranet, or theInternet. The machine may operate in the capacity of a server or aclient machine in a client-server network environment, or as a peermachine in a peer-to-peer (or distributed) network environment. Themachine may be a personal computer (PC), a tablet PC, a set-top box(STB), a Personal Digital Assistant (PDA), a cellular telephone, a webappliance, a server, a network router, switch or bridge, or any machinecapable of executing a set of instructions (sequential or otherwise)that specify actions to be taken by that machine. Further, while only asingle machine is illustrated, the term “machine” shall also be taken toinclude any collection of machines that individually or jointly executea set (or multiple sets) of instructions to perform any one or more ofthe methodologies discussed herein. In one implementation, computersystem 900 may be representative of a user device, such as user devices110A-110Z, or of a server, such as server 130, running user feedbackmodule 135.

The exemplary computer system 900 includes a processing device 902, amain memory 904 (e.g., read-only memory (ROM), flash memory, dynamicrandom access memory (DRAM) (such as synchronous DRAM (SDRAM) or RambusDRAM (RDRAM), etc.), a static memory 906 (e.g., flash memory, staticrandom access memory (SRAM), etc.), and a data storage device 918, whichcommunicate with each other via a bus 930. Any of the signals providedover various buses described herein may be time multiplexed with othersignals and provided over one or more common buses. Additionally, theinterconnection between circuit components or blocks may be shown asbuses or as single signal lines. Each of the buses may alternatively beone or more single signal lines and each of the single signal lines mayalternatively be buses.

Processing device 902 represents one or more general-purpose processingdevices such as a microprocessor, central processing unit, or the like.More particularly, the processing device may be complex instruction setcomputing (CISC) microprocessor, reduced instruction set computer (RISC)microprocessor, very long instruction word (VLIW) microprocessor, orprocessor implementing other instruction sets, or processorsimplementing a combination of instruction sets. Processing device 902may also be one or more special-purpose processing devices such as anapplication specific integrated circuit (ASIC), a field programmablegate array (FPGA), a digital signal processor (DSP), network processor,or the like. The processing device 902 is configured to executeprocessing logic 926 for performing the operations and steps discussedherein.

The computer system 900 may further include a network interface device908. The computer system 900 also may include a video display unit 910(e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), analphanumeric input device 912 (e.g., a keyboard), a cursor controldevice 914 (e.g., a mouse), and a signal generation device 916 (e.g., aspeaker).

The data storage device 918 may include a machine-readable storagemedium 928, on which is stored one or more set of instructions 922(e.g., software) embodying any one or more of the methodologies offunctions described herein. The instructions 922 may also reside,completely or at least partially, within the main memory 904 and/orwithin the processing device 902 during execution thereof by thecomputer system 900; the main memory 904 and the processing device 902also constituting machine-readable storage media. The instructions 922may further be transmitted or received over a network 920 via thenetwork interface device 908.

The machine-readable storage medium 928 may also be used to storeinstructions to perform a method dynamically providing and adaptingmedia content for a user based on user feedback, as described herein.While the machine-readable storage medium 928 is shown in an exemplaryimplementation to be a single medium, the term “machine-readable storagemedium” should be taken to include a single medium or multiple media(e.g., a centralized or distributed database, and/or associated cachesand servers) that store the one or more sets of instructions. Amachine-readable medium includes any mechanism for storing informationin a form (e.g., software, processing application) readable by a machine(e.g., a computer). The machine-readable medium may include, but is notlimited to, magnetic storage medium (e.g., floppy diskette); opticalstorage medium (e.g., CD-ROM); magneto-optical storage medium; read-onlymemory (ROM); random-access memory (RAM); erasable programmable memory(e.g., EPROM and EEPROM); flash memory; or another type of mediumsuitable for storing electronic instructions.

The preceding description sets forth numerous specific details such asexamples of specific systems, components, methods, and so forth, inorder to provide a good understanding of several implementations of thepresent disclosure. It will be apparent to one skilled in the art,however, that at least some implementations of the present disclosuremay be practiced without these specific details. In other instances,well-known components or methods are not described in detail or arepresented in simple block diagram format in order to avoid unnecessarilyobscuring the present disclosure. Thus, the specific details set forthare merely exemplary. Particular implementations may vary from theseexemplary details and still be contemplated to be within the scope ofthe present disclosure.

In situations in which the systems discussed herein collect personalinformation about users, or may make use of personal information, theusers may be provided with an opportunity to control whether programs orfeatures collect user information (e.g., information about a user'shistory, social actions or activities, profession, feedback, behavior, auser's preferences, or a user's current location), or to control whetherand/or how to receive content from the media server that may be morerelevant to the user. In addition, certain data may be treated in one ormore ways before it is stored or used, so that personally identifiableinformation is removed. For example, a user's identity may be treated sothat no personally identifiable information can be determined for theuser, or a user's geographic location may be generalized where locationinformation is obtained (such as to a city, ZIP code, or state level),so that a particular location of a user cannot be determined. Thus, theuser may have control over how information is collected about the userand used by the web server or media server.

Reference throughout this specification to “one implementation” or “animplementation” means that a particular feature, structure, orcharacteristic described in connection with the implementations includedin at least one implementation. Thus, the appearances of the phrase “inone implementation” or “in an implementation” in various placesthroughout this specification are not necessarily all referring to thesame implementation. In addition, the term “or” is intended to mean aninclusive “or” rather than an exclusive “or.”

Although the operations of the methods herein are shown and described ina particular order, the order of the operations of each method may bealtered so that certain operations may be performed in an inverse orderor so that certain operation may be performed, at least in part,concurrently with other operations. In another implementation,instructions or sub-operations of distinct operations may be in anintermittent and/or alternating manner.

What is claimed is:
 1. A method comprising: identifying, by a processingdevice, a first plurality of media items for consumption by a user,wherein the first plurality of media items are associated with a firstset of categories, wherein the first set of categories identify one ormore characteristics related to one or more of the first plurality ofmedia items and are not the same as the first plurality of media items;transmitting, by the processing device, to a user device a first mediaitem of the first plurality of media items, wherein the first media itemis associated with a first category of the first set of categories;adjusting, by the processing device, a category weight of the firstcategory associated with the first media item in view of a user feedbackon the first media item; responsive to adjusting the category weight ofthe first category associated with the first media item in view of theuser feedback on the first media item of the first plurality of mediaitems, identifying, by the processing device, an additional category inview of the adjusted category weight of the first category, wherein theadditional category is related to the first category, wherein theadditional category is not the same as the first plurality of mediaitems; and updating, by the processing device, the first set ofcategories to contain the additional category, wherein a second mediaitem of a second plurality of media items associated with the additionalcategory is selected for transmission to the user device in view of theupdated first set of categories.
 2. The method of claim 1, whereinidentifying the additional category is in response to the adjustedcategory weight of the first category exceeding a first threshold value.3. The method of claim 1, further comprising: calculating a cumulativeweight of category weights associated with the updated first set ofcategories; comparing the cumulative weight of the category weights asecond threshold value; and replacing one or more categories of thefirst set of categories with a second set of categories responsive tothe cumulative weight being under the second threshold value.
 4. Themethod of claim 1, further comprising: assigning a media weight to eachof the first plurality of media items.
 5. The method of claim 4, whereintransmitting to the user device the first media item is in view of themedia weight of each of the first plurality of media items.
 6. Themethod of claim 1, further comprising: calculating a full-rank weightfor the first media item of the first plurality of media items, thefull-rank weight comprising a combination of the adjusted categoryweight of the first category and a media weight of the first media itemof the first plurality of media items.
 7. The method of claim 1, whereinthe user feedback comprises an explicit user feedback, the explicit userfeedback comprising at least one of a like action, a dislike action, acomment, removal action, or a sharing action.
 8. The method of claim 1,wherein the user feedback comprises an implicit user feedback, theimplicit user feedback comprising at least one of a long watch action ora skip action.
 9. The method of claim 1, wherein the category weight ofthe first category is adjusted in view of a temporal relation to theuser feedback.
 10. The method of claim 1, wherein each of the first setof categories is associated with an artist identifier and each of thefirst plurality of media items is associated a video identifier.
 11. Anon-transitory machine-readable storage medium storing instructionsthat, responsive to execution by a processing device, cause theprocessing device to perform operations comprising: identifying, by theprocessing device, a first plurality of media items for consumption by auser, wherein the first plurality of media items are associated with afirst set of categories, wherein the first set of categories identifyone or more characteristics related to one or more of the firstplurality of media items and are not the same as the first plurality ofmedia items; transmitting, by the processing device, to a user device afirst media item of the first plurality of media items, wherein thefirst media item is associated with a first category of the first set ofcategories; receiving, by the processing device, a user feedback on thefirst media item; responsive to determining that the user feedback onthe first media item is positive, identifying, by the processing device,an additional category related to the first category, wherein theadditional category is not the same as the first plurality of mediaitems; and updating the first set of categories to contain theadditional category, wherein a second media item of a second pluralityof media items associated with the additional category is selected fortransmission to the user device in view of the updated first set ofcategories.
 12. The non-transitory machine-readable storage medium ofclaim 11, wherein determining that the user feedback on the first mediaitem is positive comprises: adjusting a category weight of the firstcategory associated with the first media item in view of the userfeedback; and determining the adjusted category weight of the firstcategory exceeds a first threshold value.
 13. The non-transitorymachine-readable storage medium of claim 11, the operations furthercomprising: calculating a cumulative weight of category weightsassociated with the updated first set of categories; comparing thecumulative weight of the category weights to a second threshold value;and replacing one or more categories of the first set of categories witha second set of categories responsive to the cumulative weight beingunder the second threshold value.
 14. The non-transitorymachine-readable storage medium of claim 11, the operations furthercomprising: assigning a media weight to each of the first plurality ofmedia items.
 15. The non-transitory machine-readable storage medium ofclaim 14, wherein transmitting to the user device the first media itemis in view of the media weight of each of the first plurality of mediaitems.
 16. The non-transitory machine-readable storage medium of claim12, the operations further comprising: calculating a full-rank weightfor the first media item of the first plurality of media, the full-rankweight comprising a combination of the adjusted category weight of thefirst category and a media weight of the first media item of the firstplurality of media items.
 17. A server computer system comprising: amemory; and a processing device, operatively coupled to the memory, theprocessing device to: identify a first plurality of media items forconsumption by a user, wherein the first plurality of media items areassociated with a first set of categories, wherein the first set ofcategories identify one or more characteristics related to one or moreof the first plurality of media items and are not the same as the firstplurality of media items; transmit to a user device a first media itemof the first plurality of media items, wherein the first media item isassociated with a first category of the first set of categories; adjusta category weight of the first category associated with the first mediaitem in view of a user feedback on the first media item; responsive toadjusting the category weight of the first category associated with thefirst media item in view of the user feedback on the first media item,identify an additional category in view of the adjusted category weightof the first category, wherein the additional category is related to thefirst category, wherein the additional category is not the same as thefirst plurality of media items; and update the first set of categoriesto contain the additional category, wherein a second media item of asecond plurality of media items associated with the additional categoryis selected for transmission to the user device in view of the updatedfirst set of categories.
 18. The server computer system of claim 17,wherein to identify the additional category is in response to theadjusted category weight of the first category exceeding a firstthreshold value.
 19. The server computer system of claim 17, theprocessing device further to: calculate a cumulative weight of thecategory weights associated with the updated first set of categories;compare the cumulative weight of the category weights to a secondthreshold value; and replace one or more categories of the first set ofcategories with a second set of categories responsive to the cumulativeweight being under the second threshold value.
 20. The server computersystem of claim 17, the processing device further to: calculate afull-rank weight for the first media item of the first plurality ofmedia items, the full-rank weight comprising a combination of theadjusted category weight of the first category and a media weight of thefirst media item of the first plurality of media items.